<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

注意servlet 修改以后要重新启动tomcat 服务容器才能有效<br>
不配置web.xml 访问servlet<br>
<u>
<li><a href="s/ann1" target="_blank"> 访问servlet1 </a></li>
<li><a href="s/Ann2" target="_blank"> 访问AnnServlet2 (注意区分大小写)</a></li>
<br>
value = "/s/Ann3,/s/ann,/s99/,/s/77/*"<br>
<li><a href="s/ann" target="_blank"> 访问servlet3 value=(s/ann)</a></li>
<li><a href="s/Ann3" target="_blank"> 访问servlet3 value=(s/Ann3)</a></li>
<li><a href="s99/" target="_blank"> 访问servlet3 value=(/s99/)</a></li>
<li><a href="s/77/li.do" target="_blank"> 访问servlet3 value=(s/77/*)</a></li>
<li><a href="s/xxx.do" target="_blank"> 访问servlet4 value="/s/*"</a></li>
<li><a href="s/ann5" target="_blank"> 访问servlet5 value="/s/ann5" 带 初始化参数</a></li>

</u>
<u>
<li>六、优先顺序</li>

<li>当一个url与多个servlet的匹配规则可以匹配时，则按照 “ 精确路径 > 最长路径>扩展名”这样的优先级匹配到对应的servlet。举例如下： </li>

<li>例1：比如servletA 的url-pattern为 /test，servletB的url-pattern为 /* ，这个时候，如果我访问的url为http://localhost/test ，
这个时候容器就会先进行精确路径匹配，发现/test正好被servletA精确匹配，那么就去调用servletA，
不会去管servletB。</li>

<li>例2：比如servletA的url-pattern为/test/*，
而servletB的url-pattern为/test/a/*，
此时访问http://localhost/test/a时，容器会选择路径最长的servlet来匹配，
也就是这里的servletB。 </li>

<li>例3: 比如servletA的url-pattern：*.action ，
servletB的url-pattern为 /* ，这个时候，
如果我访问的url为http://localhost/test.action，
这个时候容器就会优先进行路径匹配，而不是去匹配扩展名，这样就去调用servletB。</li>


</u>
 
</body>
</html>